#ifndef OTSU_THRESHOLD_FINDER_HPP
#define OTSU_THRESHOLD_FINDER_HPP

//------------------------------------------------------------------------------
// Fichier d'entête utilisés
//------------------------------------------------------------------------------
#include "ThresholdFinder.hpp"

namespace ImageAnalysis
{
//----------------------------------------------------------------------
// Cette classe permet de déterminer un ou deux seuils d'une
// région d'une image à partir de la méthode de Otsu.
//----------------------------------------------------------------------
class OtsuThresholdFinder : public ThresholdFinder
{
public:  
		//----------------------------------------------------------------------
        // Structure
        //----------------------------------------------------------------------
		
        //----------------------------------------------------------------------
        // Constructeur
        //----------------------------------------------------------------------
        OtsuThresholdFinder();

        //----------------------------------------------------------------------
        // Destructeur
        //----------------------------------------------------------------------
        virtual ~OtsuThresholdFinder();

        //----------------------------------------------------------------------
        // Permet de calculer un seuil par la méthode de Otsu
        //----------------------------------------------------------------------
        virtual unsigned char * GetOneThreshold(Region* regionToStudy, Gradiant* gradiantToStudy);

        //----------------------------------------------------------------------
        // Permet de calculer deux seuils par une méthode inspirée de Otsu
        //----------------------------------------------------------------------
	virtual unsigned char * GetTwoThresholds(Region* regionToStudy, Gradiant* gradiantToStudy);

protected :

	//----------------------------------------------------------------------
    // Permet de calculer les écarts types
    //----------------------------------------------------------------------
	float ComputeSigmas(int k, float mu, int taille_x, int taille_y, Histogram* histo);



};

}
#endif //OTSU_THRESHOLD_FINDER_HPP
